//
// Created by DengLibin on 2019/2/3 0003.
//

#ifndef WXWIDGETS_TETRISMAINFRAME_H
#define WXWIDGETS_TETRISMAINFRAME_H

#include <wx/wx.h>
#include <wx/frame.h>
#include <wx/event.h>
#include <iostream>
#include <vector>
#include "ActiveBlock.h"
#include "BaseBlock.h"
using  namespace std;
class TetrisMainFrame : public wxFrame{
private:
    wxPoint * position; //窗口位置
    wxColour * backgroundColor; //背景色
    ActiveBlock block; //活动方块
    vector<BaseBlock *> * block_v;//基础方块集合
    wxTimer * timer; //定时器
    int minY = game_area_height;//所有方块中y坐标最小值(最高的那个方块的y坐标)
    int score = 0;//得分
    //绘制函数
    void  OnPaint(wxPaintEvent &event);
    //初始化视图
    void initView();
    //绑定事件函数
    void initBindEvent();
    //将活动方块添加到集合
    void addToBlockV();
    //是否碰撞
    bool isCrash();
    //键盘按下事件
    void OnKeyDown(wxKeyEvent & event);
    //下移
    void downMove();
    //变形
    void change();
    //右碰撞
    bool  rightCrash();
    //左碰撞
    bool  leftCrash();
    /**
    * 定时器函数
    * @param event
    */
    void onTimer(wxTimerEvent & event);

public:
    TetrisMainFrame();
    ~TetrisMainFrame();
};


#endif //WXWIDGETS_TETRISMAINFRAME_H
